package com.xioaye.cs.basic;
//
//题目描述
//        数据表记录包含表索引和数值（int范围的整数），请对表索引相同的记录进行合并，即将相同索引的数值进行求和运算，输出按照key值升序进行输出。
//
//        输入描述:
//        先输入键值对的个数
//        然后输入成对的index和value值，以空格隔开
//
//        输出描述:
//        输出合并后的键值对（多行）

import java.util.*;

public class MergeRecords {
    public static void main(String[] args) {


        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {

            int num = Integer.parseInt( sc.nextLine());


            SortedMap<Integer, Integer> integerIntegerSortedMap = new TreeMap<>();
            for (int i = 0; i < num; i++) {
                String line = sc.nextLine();

                String[] split = line.split(" ");

                int key = Integer.parseInt(split[0]);
                int value = Integer.parseInt(split[1]);


                if (integerIntegerSortedMap.containsKey(key)) {

                    integerIntegerSortedMap.put(key, integerIntegerSortedMap.get(key) + value);


                } else {

                    integerIntegerSortedMap.put(key, value);
                }


            }


            for (Integer integer : integerIntegerSortedMap.keySet()) {

                System.out.println(integer + " " + integerIntegerSortedMap.get(integer));


            }


        }
    }


}


